﻿namespace RuoVea.H5DS.Dto;

/// <summary>
/// 主实体类
/// </summary>
public class Project
{
    // 项目描述
    public string desc { get; set; }

    // 浮动层列表
    public List<FloatingLayer> fixeds { get; set; }  

    // 背景图片 URL
    public string img { get; set; }

    // 项目名称
    public string name { get; set; }

    // 页面列表
    public List<Page> pages { get; set; }  

    // 插件列表
    public List<Plugin> plugins { get; set; }  

    // 弹窗列表
    public List<Popup> popups { get; set; } 

    // 滑动设置
    public Slider slider { get; set; }  

    // 样式信息
    public Style style { get; set; }  

    // 项目类型
    public string type { get; set; } 

    // 版本号
    public string version { get; set; }  
}

/// <summary>
/// 浮动层实体类
/// </summary>
public class FloatingLayer
{
    // CSS 类名
    public string className { get; set; }

    // HTML 元素 ID
    public string id { get; set; }

    // 唯一标识符
    public string keyid { get; set; }

    // 子层列表
    public List<object> layers { get; set; }  

    // 浮动层名称
    public string name { get; set; }

    // 样式信息
    public Style style { get; set; }  
}

/// <summary>
/// 页面实体类
/// </summary>
public class Page
{
    // CSS 类名
    public string className { get; set; }

    // 页面描述
    public string desc { get; set; }

    // HTML 元素 ID
    public string id { get; set; }

    // 唯一标识符
    public string keyid { get; set; }

    // 页面中的图层列表
    public List<Layer> layers { get; set; }  

    // 页面名称
    public string name { get; set; }

    // 滑动设置
    public Slider slider { get; set; }  

    /// <summary>
    /// 
    /// </summary>
    public Style style { get; set; }  
}
/// <summary>
/// 文本层实体类
/// </summary>
public class Layer
{
    // 动画效果列表
    public List<object> animate { get; set; }  

    // CSS 类名
    public string className { get; set; }

    // 图层数据（文本内容、样式等）
    public LayerData data { get; set; }  

    // 扩展样式（可选）
    public Dictionary<string, object> estyle { get; set; }  

    // 事件列表（如点击事件）
    public List<object> events { get; set; }  

    // HTML 元素 ID
    public string id { get; set; }

    // 唯一标识符
    public string keyid { get; set; }

    // 图层名称
    public string name { get; set; }

    // 父级组件类型
    public string pid { get; set; }

    // 图层设置（隐藏、锁定等）
    public LayerSet set { get; set; }  

    // 图层样式
    public Style style { get; set; } 

    // 版本号
    public string version { get; set; }
}

/// <summary>
/// 文本数据实体类
/// </summary>
public class LayerData
{
    // 动画效果
    public string animate { get; set; }

    // 艺术字样式
    public Artword artword { get; set; }  

    // 文本内容
    public string data { get; set; }  

    // 字体集
    public FontFamilySet fontFamilySet { get; set; }  

    // 唯一标识符
    public string keyid { get; set; }

    // 文本样式
    public Style style { get; set; }  
}

/// <summary>
/// 艺术字实体类
/// </summary>
public class Artword
{
    // 艺术字颜色列表
    public List<string> colors { get; set; }  

    // 艺术字名称
    public string name { get; set; }

    // 艺术字类型
    public string type { get; set; }
}

/// <summary>
/// 字体集实体类
/// </summary>
public class FontFamilySet
{
    // 字体名称
    public string name { get; set; }

    // 字体文件 URL
    public string url { get; set; }
}

/// <summary>
/// 图层设置实体类
/// </summary>
public class LayerSet
{
    // 是否隐藏
    public bool hide { get; set; }

    // 是否锁定
    public bool @lock { get; set; }
}
/// <summary>
/// 样式实体类
/// </summary>
public class Style
{
    //public Style()
    //{
    //    width = 320;
    //    height = 514;
    //}
    // 背景颜色
    public string backgroundColor { get; set; }

    // 是否全局背景
    public bool backgroundGlobal { get; set; }

    // 背景图片
    public string backgroundImage { get; set; }

    // 背景裁剪信息
    public string backgroundImageCrop { get; set; }

    // 背景重复方式
    public string backgroundRepeat { get; set; }

    // 背景尺寸
    public string backgroundSize { get; set; }

    // 文本颜色
    public string color { get; set; }

    // 字体族
    public string fontFamily { get; set; }

    // 字体大小
    public string fontSize { get; set; }

    // 字间距
    public string letterSpacing { get; set; }

    // 文本对齐方式
    public string textAlign { get; set; }

    // 文本修饰
    public string textDecoration { get; set; }

    // 行高
    public double? lineHeight { get; set; }

    // 高度
    public double? height { get; set; }

    // 宽度
    public double? width { get; set; }

    // 左边距
    public double? left { get; set; }

    // 顶部边距
    public double? top { get; set; }

    // 透明度
    public double? opacity { get; set; }
}

/// <summary>
/// 滑动设置实体类
/// </summary>
public class Slider
{
//    public Slider() {
//      speed  = 0.5;
//    effect  = "slide";
//     autoplay   = false;
//     time   = 5;
//}
    /// <summary>
    /// 
    /// </summary>
    public double speed { get; set; } 
    /// <summary>
    /// 
    /// </summary>
    public string effect { get; set; }  

    // 动画效果
    public int animate { get; set; }

    // 是否自动播放
    public bool autoplay { get; set; }

    // 是否锁定
    public bool @lock { get; set; }

    // 是否显示滚动条
    public bool showscroll { get; set; }

    // 自动播放时间间隔（秒）
    public int time { get; set; }  
}

/// <summary>
/// 插件实体类
/// </summary>
public class Plugin
{
    // 插件类可以扩展更多属性
}
/// <summary>
/// 弹窗实体类
/// </summary>
public class Popup
{
    // 弹窗类可以扩展更多属性
}